// pages/car/car.js
const {
    $http,
    $login
} = require('../../utils/async');
const app = getApp();
Page({

    /**
     * 页面的初始数据
     */
    data: {
        list: [{
                g_id: 1,
                num: 2,
                checke: true,
                tag: "标签",
                price: "10.00",
                desc: "描述信息",
                title: "商品标题",
                thumb: "https://img01.yzcdn.cn/vant/ipad.jpeg"
            },
            {
                g_id: 2,
                num: 2,
                checke: false,
                tag: "标签",
                price: "10.00",
                desc: "描述信息",
                title: "商品标题",
                thumb: "https://img01.yzcdn.cn/vant/ipad.jpeg"
            },
            {
                g_id: 3,
                num: 2,
                checke: false,
                tag: "标签",
                price: "10.00",
                desc: "描述信息",
                title: "商品标题",
                thumb: "https://img01.yzcdn.cn/vant/ipad.jpeg"
            }
        ],
        totalPrice: 0, //总价格
        totalQuantity: 0, //总数量
        all: false, //全选按钮
    },
    // 下单
    async xiadan() {
        try {
            let ids = this.data.list.filter(item=>item.checke).map(item=>item.g_id);
            // 获取token 放到header中
            let token = wx.getStorageSync('token') || '';
            let return_msg = await $http({
                header: token,
                data:{
                    good_id:ids,
                    good_total_price:this.data.totalPrice,
                },
                url:"下单路径路径(创建订单页面)"
            })
            // 返回订单编号。根据订单标号跳转订单页面
            // 跳转订单页面，进行渲染订单页面，并判断是否有收货地址，没有则新添加
        } catch (e) {}
    },
    // 点击复选框按钮
    clickCheck(e) {
        let tempList = this.data.list;
        let {
            index
        } = e.currentTarget.dataset;
        let tempKey = 'list[' + index + '].checke';
        this.setData({
            [tempKey]: !tempList[index].checke
        })
        this.computedPrice();
        this.everyItem()
    },
    // 计算总价
    computedPrice() {
        let filterList = this.data.list.filter(item => item.checke);
        this.setData({
            totalPrice: filterList.reduce((temp, item) => temp + (Number(item.price) * item.num), 0),
            totalQuantity: filterList.reduce((temp, item) => temp + item.num, 0)
        })
    },
    // 检索每一项的checke  【都满足条件则all为true】
    everyItem() {
        this.setData({
            all: this.data.list.length == 0 ? false : this.data.list.every(item => item.checke)
        })
    },
    // 删除某一项数据
    removeData(index) {

        let temp = [...this.data.list];
        temp.splice(index, 1);
        console.log(temp);
        this.setData({
            list: temp
        })
    },
    // 加减
    jiajian(e) {
        let _this = this;
        let {
            index,
            text: state
        } = e.currentTarget.dataset;
        let temp = `list[${index}].num`;
        let tempNum = this.data.list[index].num;
        // 删除
        if (state == 'x') {
            _this.removeData(index);
            _this.everyItem();
            // 为什么要重新计算一遍？    这是个异步啊大哥。 相当于删除了，再计算一遍似的
            _this.computedPrice();
            return
        }
        this.setData({
            [temp]: state == '+' ? tempNum + 1 : tempNum - 1
        })
        if (this.data.list[index].num <= 0) {
            this.setData({
                [temp]: 1
            })
            wx.showModal({
                title: '提示',
                content: '已经到达边底值，确定则删除该购物信息',
                success(res) {
                    if (res.confirm) {
                        console.log('用户点击确定');
                        _this.removeData(index);
                        _this.everyItem();
                        // 为什么要重新计算一遍？    这是个异步啊大哥。 相当于删除了，再计算一遍似的
                        _this.computedPrice();
                    } else if (res.cancel) {
                        console.log('用户点击取消')
                    }
                }
            })
        }

        this.computedPrice();
    },
    // 全选
    allSelect() {
        let temp = this.data.list;
        temp.forEach((item, index) => {
            temp[index].checke = !this.data.all ? true : false
        })
        this.setData({
            list: temp
        })
        this.setData({
            all: !this.data.all
        })
        this.computedPrice();


    },


    // addCart 加入购物车逻辑
    async addCart() {
        try {
            let _this = this
            let token = wx.getStorageSync('token'); //获取本地存储中的token
            // 判断 有无token
            if (!token) {
                let code = await $login();
                console.log(code);
                console.log(app.globalData.userDetail);
            }
        } catch (err) {
            console.log(err);
        }
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        this.computedPrice();
        this.everyItem()
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})